#include "fractie.h"
#include <math.h>
#include <iostream>

Fractie::Fractie(int num,int numi){
	(*this).numarator=num;
	(*this).numitor=numi;
}
Fractie Fractie::operator +(Fractie& right){
	int x,y;
	x=(*this).numarator*right.numitor+(*this).numitor*right.numarator;
	y=(*this).numitor*right.numitor;
	Fractie rez(x,y);
	return rez;
}
std::ostream& operator <<(std::ostream& out,Fractie& right){
	out<<"\nNumarator= "<<right.numarator<<" Numitor= "<<right.numitor<<"\n";
} 
Fractie Fractie::operator -(Fractie& right){
	right.numarator=-right.numarator;
	int x,y;
	x=(*this).numarator*right.numitor+(*this).numitor*right.numarator;
	y=(*this).numitor*right.numitor;
	Fractie rez(x,y);
	return rez;
}
Fractie Fractie::operator *(Fractie& right){
	int x,y;
	x=(*this).numarator*right.numarator;
	y=(*this).numitor*right.numitor;
	Fractie rez(x,y);
	return rez;
}
Fractie Fractie::operator /(Fractie& right){
	int x,y;
	x=(*this).numarator*right.numitor;
	y=(*this).numitor*right.numarator;
	Fractie rez(x,y);
	return rez;	
}
Fractie Fractie::operator ^(int n){
int x,y;
if((*this).numarator==1&&(*this).numitor==1)
	{
			x=1;
			y=1;
		 Fractie rez(x,y);
		return rez;		
	}	
if((*this).numarator==1)
	{
		x=(*this).numarator;
		y=pow((*this).numitor,n);	
		Fractie rez(x,y);
			return rez;
	}
if((*this).numitor==1)
	{
		x=pow((*this).numarator,n);
		y=(*this).numitor;
		Fractie rez(x,y);
			return rez;
	}
}
